#include "playerhelper.h"

PlayerHelper::PlayerHelper(QObject *parent) : QObject(parent) {
    player = new QMediaPlayer(this);
    playlist = new QMediaPlaylist(player);
    player->setPlaylist(playlist);// 将播放器的播放列表设置为上面创建的playlist

    // 转发信号
    connect(player, &QMediaPlayer::positionChanged,
            this, &PlayerHelper::positionChanged);
    connect(player, &QMediaPlayer::durationChanged,
            this, &PlayerHelper::durationChanged);
}

PlayerHelper::~PlayerHelper() {
    delete player;

}
// 播放音乐
void PlayerHelper::play() {

    // 检查当前播放器状态，仅在非播放状态时调用play()
    if (player->state() != QMediaPlayer::PlayingState) {
        player->play();
    }
}
// 暂停播放
void PlayerHelper::pause() {
    // 仅在播放状态时调用pause()，确保状态切换正确
    if (player->state() == QMediaPlayer::PlayingState) {
        player->pause();
    }
}

void PlayerHelper::stop() {
    player->stop();
}
// 设置当前播放的媒体（歌曲）
void PlayerHelper::setMedia(const QUrl& url) {
    playlist->clear();
    playlist->addMedia(url);
    playlist->setCurrentIndex(0);  // 将播放列表索引设置为0
}
// 设置播放音量（0-100）
void PlayerHelper::setVolume(int volume) {
    player->setVolume(volume);
}
// 设置当前播放位置（进度）
void PlayerHelper::setPosition(qint64 position) {
    player->setPosition(position);
}
// 获取当前播放器状态（播放/暂停/停止）
QMediaPlayer::State PlayerHelper::state() const {
    return player->state();
}
// 获取当前媒体的总时长
qint64 PlayerHelper::duration() const {
    return player->duration();
}
